package com.netty.algothm;

/**
 * 取模运算的效率比较低，但是可以用为运算来为其提高运行效率，前提是，使用 2 的此幂作为运算的值带入其中
 * 如果在 hash 算法中使用这为运算，可以提高散列分布的均运性，减少 hash 碰撞。
 *
 * @author xl-9527
 * @since 2024/6/15
 **/
public class BitwiseOperation {

    static int a = 17;
    static int b = 8;

    public static void main(String[] args) {
        final int operation = operationWithCommon(a, b);
        final int operationWithBitwise = operationWithBitwise(a, b);
        System.out.println(operation);
        System.out.println("位运算的结果" + operationWithBitwise);
    }

    /**
     * 如果想要计算 a % b，并且使用为运算的方式来获取想要的值，则需要 <pre>{@code a & (b - 1)}</pre>
     */
    private static int operationWithCommon(int a, int b) {
        return a % b;
    }

    private static int operationWithBitwise(int a, int b) {
        return a & (b - 1);
    }
}
